package com.tsp_tux.demo.Mapper;

import com.tsp_tux.demo.Entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;


/**
 * Created by 周志伟
 */
@Mapper
public interface ArticleMapper {
    /**
     * 通过用户及文章状态获取文章
     *
     * @param uid   String 用户id
     * @param state int 文章状态
     * @return 根据用户id和文章状态获取文章列表
     */
    List<Article_List> getArticleByStateByUidAndState(String uid, int state);
    List<Article_List> getArticleByStateBySubname(String  subname);
    List<Article_List> getArticleByStateByUsername(String  username);
    List<Article_List> getArticleByStateByUidAndSid(String uid, int sid);
    /**
     * 获取评论
     *
     * @param aid int 文章ID
     * @return 通过aid获取的评论
     */
    List<Comments_List> getComments(int aid);
    List<Comments_List> getCommentsByAidAndParentId(int aid,int parentId);
    //TODO:parentId 换成int类型

    /**
     * 保存评论
     *
     * @param aid      int 文章ID
     * @param content  String 文章内容
     * @param parentId String
     * @param uid      String 用户ID
     * @param puid     Sting 父用户ID
     */
    void PreserveComment(int aid, String content,Integer parentId, String uid, String puid);

    /**
     * 收藏
     *
     * @param aid int 文章ID
     * @param uid String 用户ID
     */
    void ArticleAndUserCollect(int aid, String uid);

    /**
     * 点赞
     *
     * @param aid int 文章ID
     * @param uid String 用户ID
     */
    void ArticleAndUserPraise(int aid, String uid);

    /**
     * 获取点赞数和收藏数
     *
     * @param aid int 文章ID
     * @return PraiseAndCollectNum 包含点赞和收藏信息
     */
    PraiseAndCollectNum getDigital(int aid);

    /**
     * 查询是否点赞
     *
     * @param aid int 文章ID
     * @param uid String 用户ID
     * @return int 成功返回0，失败返回1，已经点赞返回2
     */
    int getArticle_User_Praise(int aid, String uid);

    /**
     * 查询是否收藏
     *
     * @param aid int 文章ID
     * @param uid String 用户ID
     * @return int 成功返回0，失败返回1，已经收藏返回2
     */
    int getArticle_User(int aid, String uid);

    /**
     * @param aid 文章id
     * @return
     */
    List<ArticleContent_List> getArticleByAid(int aid);
    /**
     *insert by 张帅
     *前端发送请求，后端返回8条已发布的推荐文章信息（点赞数最高
     */
    public List<Article_List_1>  getCommendArtical();

    /**
     * 删除文章
     *
     * @param aid int 文章ID
     * @return int 成功返回1，失败返回0
     * @author 童一凡
     */
    int deleteArticle(int aid);

    /**
     * @param keyword String 关键字
     * @return 搜索文章，返回文章信息
     * @author 童一凡
     */
    public List<String> searchArticleByKeyword(String keyword);
    public Article_List_1 searchArticleByKeyword2(String aid);

    /** 删除收藏关系
     * Author 周志伟
     * @param aid 文章id
     * @param uid 用户id
     */
    void deleteArticle_User(int aid, String uid);

    /** 删除点赞关系
     * Author 周志伟
     * @param aid 文章id
     * @param uid 用户id
     */
    void deleteArticle_User_Praise(int aid, String uid);

    /**
     * Author 周志伟
     * @param aid 文章id
     * return 文章综合评分。
     */
    Float getArticleMarkByAid(int aid);
    /** 获取文章的视频资源的url
     * Author 周志伟
     * @param aid 文章id
     * return 文章综合评分。
     */
    List<String> getVideoUrlByAid(int aid);

    /**
     * 删除文章
     *
     * @param  aid int 文章ID
     * @return int 成功返回1，失败返回0
     * @author 谢颖
     */
    int rebuildArticle(int aid);

    @Select("select * from article left join mark on article.aid=mark.aid where uid=#{uid} order by mark desc limit 0,3")
    List<Article> getHighest3(String uid);
    List<Article_List_2> getFiveMark(String uid);

    List<DailyStatistics> getDailyNum();

    /**
     * 获取评分人数
     * @param aid
     * @return  评分人数
     */
    int getEvalueNum(int aid);


}
